/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.unipar.oficina.modelo.cadastros;

import java.io.Serializable;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.*;

/**
 *
 * @author Thiago Marques
 */
@Entity
public class Colaborador implements Serializable {

    public static final long serialVersionUID = 26L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long idColaborador;
    @Column(name = "MATRICULA")
    private String matricula;
    @Column(name = "NOME")
    private String nome;
    @ManyToOne
    @JoinColumn(name = "idCargo")
    private Cargo cargo;
    @OneToMany(targetEntity=CursoColaborador.class, mappedBy="colaborador", cascade= CascadeType.ALL, fetch= FetchType.LAZY, orphanRemoval=true)
    private List<CursoColaborador> cursocolaboradores = new ArrayList<CursoColaborador>();
    @Temporal(TemporalType.DATE)
    private Date dtCadastro = new Date();
    private Boolean ativo;
    @Version
    private Timestamp versao;

    public Cargo getCargo() {
        return cargo;
    }

    public void setCargo(Cargo cargo) {
        this.cargo = cargo;
    }

    public Long getIdColaborador() {
        return idColaborador;
    }

    public void setIdColaborador(Long idColaborador) {
        this.idColaborador = idColaborador;
    }

    public String getMatricula() {
        return matricula;
    }

    public void setMatricula(String matricula) {
        this.matricula = matricula;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public Boolean getAtivo() {
        return ativo;
    }

    public void setAtivo(Boolean ativo) {
        this.ativo = ativo;
    }

    public Date getDtCadastro() {
        return dtCadastro;
    }

    public void setDtCadastro(Date dtCadastro) {
        this.dtCadastro = dtCadastro;
    }

    public Timestamp getVersao() {
        return versao;
    }

    public void setVersao(Timestamp versao) {
        this.versao = versao;
    }

    public List<CursoColaborador> getCursocolaboradores() {
        return cursocolaboradores;
    }

    public void setCursocolaboradores(List<CursoColaborador> cursocolaboradores) {
        this.cursocolaboradores = cursocolaboradores;
    }

    
    

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Colaborador other = (Colaborador) obj;
        if (this.idColaborador != other.idColaborador && (this.idColaborador == null || !this.idColaborador.equals(other.idColaborador))) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 3;
        hash = 67 * hash + (this.idColaborador != null ? this.idColaborador.hashCode() : 0);
        return hash;
    }
    
    
    @Override
    public String toString() {
        return String.valueOf(nome);
    }    
    
}
